/**
 * 树节点修改控制器
 */
(function (app, ng) {
    'use strict';

    /**
     * 注册控制器
     */
    app.controller('addOrUpdateTreeNodeCtrl', Controller);

    /**
     * 依赖项
     */
    Controller.$inject = ['$scope', '$controller','module', 'treeService'] // iResource依赖项
        .concat([ '$stateParams', '$uibModal','$uibModalInstance', 'dialogs','param']); // 常用

    /**
     * 声明控制器
     * @param $scope 当前作用域
     * @param $controller 控制器服务
     * @param module 当前模块
     * @param Service 当前服务
     * @param $stateParams 路由参数
     * @param $uibModal 模态框服务
     * @param dialogs 提示框服务
     * @constructor
     */
    function Controller($scope, $controller,module, Service, $stateParams, $uibModal,$uibModalInstance,dialogs,param) {
        // 初始化
        var vm = this;
       extendResourceController();
        var iResource = vm.iResource;

        // 属性声明
        vm.isEdit = param.isEdit;

        //初始化节点类型
        vm.nodeTypes = [
            {name:"父节点",value: 1 },
            {name:"叶子节点",value: 2 }
        ];

        if(!vm.isEdit ){//新增
            vm.addNode = {};
            vm.parentTreeNode =  param.parentTreeNode;
            vm.addNode.pId = vm.parentTreeNode.id;
        }
        if(vm.isEdit){//修改
            vm.addNode = param.treeNode;
            vm.addNode.nodeType = vm.addNode.type;
            vm.parentTreeNode= vm.addNode.getParentNode();
        }

        // 方法引用
        ng.extend(vm, {
            save: save, // 新增和修改节点
            cancel:cancel//取消修改和新增
        });

        // 方法声明

        /**
         * 继承Restful控制器
         */
        function extendResourceController() {
            var controller = $controller('iResourceController', {$scope: $scope, module: module,iResource: Service});
            ng.extend(vm, controller);
        }

        function save () {

            if(vm.isEdit){
                Service.updateNode(vm.addNode).then(function(data){
                    if (data.success === false) {
                        dialogs.notify(data);
                    } else {
                        dialogs.notify(undefined, getMessage("操作成功")).closed.then(function () {
                            $uibModalInstance.close(vm.addNode);
                        });
                    }
                });
            }else {
                Service.addNode(vm.addNode).then(function(data){
                    if (data.success === false) {
                        dialogs.notify(data);
                    } else {
                        dialogs.notify(undefined, getMessage("操作成功")).closed.then(function () {
                            $uibModalInstance.close(vm.addNode);
                        });
                    }
                });
            }
        };

        function cancel () {
            //dismiss也是在模态框关闭的时候进行调用,而它返回的是一个reason
            $uibModalInstance.dismiss('cancel');
        };
    }
})(iApp.module(), window.angular);